<?php

class Blog_Model_DbTable_Articulos extends Zend_Db_Table_Abstract
{

    protected $_name = 'blog_articulos';
    //obtener una lista de comentarios
    //$this->findDependentRowset('Blog_Model_DbTable_Comentarios');
    protected $_dependentTables = array('Blog_Model_DbTable_Comentarios');

    //obtener creador
    //$this->findParentRow('Application_Model_DbTable_Usuarios', 'Creador')->nombre_real
    protected $_referenceMap    = array(
        'Creador' => array(
            'columns'           => 'creador',
            'refTableClass'     => 'Application_Model_DbTable_Usuarios',
            'refColumns'        => 'usuario'
        )
    );
    
    public function obtenerSigId()
    {   
        // necesita el nombre de la base de datos
        Zend_Loader::loadClass('Zend_Auth_Adapter_DbTable');
        $dbName = Zend_Registry::get('dbName');
        $sql = "SELECT auto_increment"
                . " FROM information_schema.tables"
                . " WHERE table_schema='" . $dbName . "'"
                . " AND table_name='blog_articulos';";  
        $query = $this->getAdapter()->query($sql);
        $last_id = $query->fetchAll();
        $sig_id = $last_id[0]['auto_increment'];
        return $sig_id; 
    }  
    
    public function obtenerTodo() {
        $select = $this->select();
        $select->from($this, array('id','nombre','titulo','cuerpo','imagen',
            'creador','fecha_crea',
            'modificador','fecha_mod',
            'cant_coment'));
        $select->where('creador IS NOT NULL');
        $select->order('id DESC');
        return $this->fetchAll($select);
    }
    
    //cuando borro un usuario sus blogs quedan huerfanos
    public function obtenerHuerfanos() {
        $select = $this->select();
        $select->from($this, array('id','nombre','titulo','cuerpo','imagen',
            'creador','fecha_crea',
            'modificador','fecha_mod',
            'cant_coment'));
        $select->where('creador IS NULL'); //('creador IS NOT NULL');
        return $this->fetchAll($select);
    }
    
    public function obtenerArticulo($id) {
        $select = $this->select();
        $select->where('id = ?', $id);
        return $this->fetchRow($select);  
    }
    
    public function crearArticulo ($nombre,$titulo,$cuerpo,$creador){
        $data = array(
            "nombre" => $nombre, 
            "titulo" => $titulo, 
            "cuerpo" => $cuerpo,  
            "creador" => $creador->usuario, 
            "fecha_crea" => date("Y-m-d H:i:s")
        );
        $id = $this->insert($data);
        return $id;
    }
    
    public function crearCarpeta ($id){
        $upload = Zend_Registry::get('upload_paths');
        $pathname = $upload->paths->upload->images->blog->articulos . "/" . $id;
        mkdir($pathname);
        return $pathname;
    }


    public function guardarImagen ($id,$imagen){
        
        $upload = Zend_Registry::get('upload_paths');
        $pathname = $upload->paths->upload->images->blog->articulos . "/" . $id;
        
        if ($imagen) {
            $handle = opendir($pathname);
            while ($f = readdir($handle))  {   
                if ($f=='.' || $f=='..' || $f==$imagen) 
                    continue; 
                else 
                    unlink($pathname . "/" . $f); 
            }
            closedir($handle);
            
            $data = array(
                'imagen' => '/media/blog/articulos/' . $id . '/' . $imagen,
            );
            $this->update($data, array('id = ?' => $id));
        } 
        
    }
    
    public function borrarArticulo($id){
        $upload = Zend_Registry::get('upload_paths');
        $pathname = $upload->paths->upload->images->blog->articulos . "/" . $id;
        $handle = opendir($pathname);
        while ($f = readdir($handle))  {   
            if ($f=='.' || $f=='..') 
                continue; 
            else 
                unlink($pathname . "/" . $f); 
        }
        closedir($handle);
        rmdir($pathname);
        $this->delete(array('id = ?' => $id));
    }
    
    
    public function actualizarArticulo($id,$opciones) {
        $pathname = $opciones['path'];
        $newFile = $opciones['imagen'];
        if ($newFile) {
            $handle = opendir($pathname);
            while ($f = readdir($handle))  {   
                if ($f=='.' || $f=='..' || $f==$newFile) 
                    continue; 
                else 
                    unlink($pathname . "/" . $f); 
            }
            closedir($handle);
            $path_bd = '/media/blog/articulos/' . $id . '/' . $opciones['imagen'];
        } else {
            $articulo = $this->obtenerArticulo($id);
            $path_bd = $articulo->imagen;
        }
        $data = array(
            'nombre' => $opciones['nombre'],
            'titulo' => $opciones['titulo'],
            'cuerpo' => $opciones['cuerpo'],  
            'imagen' => $path_bd, 
            'modificador' => $opciones['mod'], 
        );
        $this->update($data, array('id = ?' => $id));
    }

}

